package com.zy.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * @Author
 * @ClassName DateUtil
 * @Description TODO 时间工具类
 * @Date 2018/12/12 17:02
 * @Version 1.0
 */
public class DateUtil {


    /**
     * @Author
     * @Description //TODO 获取当前日期的字符串
     * @Date 2019/3/22 14:22
     * @Param
     * @return
     */
    public static String dateToString(){
        Date date = new Date();
        SimpleDateFormat sDformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
        String format = sDformat.format(date);
        return format;
    }

    /**
     * @Author
     * @Description //TODO  将日期字符串yyyy-MM-dd 转换成 yyyy年MM月dd日
     * @Date 2018/12/12 17:02
     * @Param
     * @return
     */

    public static String dateStrToStr(String dateStr){
        if(dateStr==null || dateStr.equals("")) {
            return null;
        }else {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CANADA);
            try {
                Date date = simpleDateFormat.parse(dateStr);
                SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
                String dateFormat = format.format(date);
                return dateFormat;
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /**
     * @Author
     * @Description //TODO 把两个字符串时间转换成时间段（xxxx年xx月xx日--xxxx年xx月xx日）
     * @Date 2019/1/24 15:10
     * @Param
     * @return
     */
    public static String dateStrSplicing(String startTime,String endTime){
        String sTime = dateStrToStr(startTime);
        String eTime = dateStrToStr(endTime);
        return sTime + "--" + eTime;
    }
    /**
     * @Author
     * @Description //TODO 通过两个日期字符串(eg:2019-1-12)计算相差天数
     * @Date 2019/1/25 13:45
     * @Param
     * @return
     */

    public static String differDate(String startTime,String endTime) throws ParseException {
        if(startTime==null || endTime==null){
            return "0";
        }
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd", Locale.CANADA);
        Date d1=sdf.parse(startTime);
        Date d2=sdf.parse(endTime);
        long daysBetween=(d2.getTime()-d1.getTime()+60*60*24*1000)/(60*60*24*1000);
        return String.valueOf(daysBetween);
    }

    /**
     *
     * @param time
     *           时间
     * @param num
     *           加的数，-num就是减去
     * @return
     *          减去相应的数量的天的日期
     * @throws ParseException Date
     */
    public static String dayAddNum(String time, Integer num) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date = format.parse(time);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, num);
        Date newTime = calendar.getTime();
        String format1 = format.format(newTime);
        return format1;
    }


}